package com.fivefu.core.camera.services;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fivefu.core.camera.entity.DbMonitorWorkorder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fivefu.core.camera.entity.DbMonitorWorkorderImage;
import com.fivefu.core.camera.vo.response.MonitorWorkerBean;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 工单表 服务类
 * </p>
 *
 * @author 
 * @since 2022-09-21 20:12:53
 */
public interface DbMonitorWorkorderService extends IService<DbMonitorWorkorder> {

    /**
     * 编辑工单信息
     * @param workorder 工单信息
     * @param userid 操作用户
     * @return
     */
    Long editMonitorWorkorder(DbMonitorWorkorder workorder, String userid);

    /**
     * 编辑工单信息
     * @param workorder 工单信息
     * @param images 图片信息
     * @param userid 操作用户编号
     * @return
     */
    Long editMonitorWorkorder(DbMonitorWorkorder workorder, List<DbMonitorWorkorderImage> images, String userid);

    /**
     *工单列表
     * @param page 页码
     * @param limit 数量
     * @param type 工单类型
     * @param orderBigType 问题大类
     * @param orderSmallType 问题小类
     * @param orderAreaid 所属城区
     * @param orderPushStatus 状态
     * @param cameraName 探头名称
     * @param cStime 生成时间的开始
     * @param cEtime 生成时间的结束
     */
    Page<MonitorWorkerBean> queryMonitorWorkerList(Integer page, Integer limit,String type,String orderBigType, String orderSmallType, String orderAreaid, String orderPushStatus, String cameraName, String cStime,String cEtime);

    /**
     *
     * 格式化工单信息
     * @param monitorWorkorder
     */
    Map<String,Object> formatMonitorWorker(DbMonitorWorkorder monitorWorkorder);

    /**
     * 通过主键编号查询工单详情
     * @param orderId 工单编号
     * @return
     */
    DbMonitorWorkorder queryWorkorderById(Long orderId);

    /**
     *
     * 工单详情
     * @param orderId 工单id
     */
    Map<String, Object> queryMonitorWorkDetail(Long orderId);

    /**
     * 查询案卷列表
     * @param orderStatus 案卷状态
     * @param orderPushStatus 推送状态
     * @return
     */
    List<DbMonitorWorkorder> queryEventListByStatus(Long orderStatus, Long orderPushStatus);

    /**
     * 查询已经生成工单的数据信息
     * @return
     */
    List<DbMonitorWorkorder> queryWorkorderList();

    /**
     * 根据事件id集查询工单
     * @param eventIds  事件id集
     * @return
     */
    List<DbMonitorWorkorder> queryWorkOrderListByEventIds(List<Long> eventIds);
}
